package br.com.vilababy.sigvb.modelo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;

import br.com.vilababy.sigvb.constantes.FormaPagamento;

@Entity
public class Pagamento extends SIGVBModelo implements Serializable {

	/**
	 * @author Diego Patrick da Silva Santos
	 */
	private static final long serialVersionUID = 1L;

	@Id @GeneratedValue
	@Column(name="codigo_pagamento")
	private Long id;
	@Column(nullable=false)
	private Boolean ativo;
	private String observacao;
	@OneToOne
	private Cheque cheque;
	@OneToOne
	private Boleto boleto;
	@Column(name="forma_pagamento", nullable=false)
	private FormaPagamento formaPagamento;
	@Column(name="tipo_pagamento", nullable=false)
	private Integer tipoPagamento;
	@ManyToOne
	@JoinColumn(nullable=false)
	private Periodo periodo;
	@ManyToOne
	@JoinColumn(nullable=false)
	private Responsavel responsavel;
	@Column(name="valor_previsto", nullable=false)
	private BigDecimal valorPrevisto;
	@Column(name="valor_pago", nullable=false)
	private BigDecimal valorPago;
	@Column(name="valor_desconto_1")
	private BigDecimal valorPrimeiroDesconto;
	@Column(name="valor_desconto_2")
	private BigDecimal valorSegundoDesconto;
	@Column(name="data_desconto_1", nullable=false)
	private Calendar dataPrimeiroDesconto;
	@Column(name="data_desconto_2", nullable=false)
	private Calendar dataSegundoDesconto;
	@Column(name="data_pagamento", nullable=false)
	private Calendar dataPagamento;
	@Column(nullable=false)
	private Calendar referencia;
	@Column(name="data_vencimento", nullable=false)
	private Calendar dataVencimento;
	
	public final Long getId() {
		return id;
	}
	public final void setId(Long id) {
		this.id = id;
	}
	public final BigDecimal getValorPrevisto() {
		return valorPrevisto;
	}
	public final void setValorPrevisto(BigDecimal valorPrevisto) {
		this.valorPrevisto = valorPrevisto;
	}
	public final BigDecimal getValorPago() {
		return valorPago;
	}
	public final void setValorPago(BigDecimal valorPago) {
		this.valorPago = valorPago;
	}
	public final Calendar getDataPrimeiroDesconto() {
		return dataPrimeiroDesconto;
	}
	public final void setDataPrimeiroDesconto(Calendar dataPrimeiroDesconto) {
		this.dataPrimeiroDesconto = dataPrimeiroDesconto;
	}
	public final Calendar getDataSegundoDesconto() {
		return dataSegundoDesconto;
	}
	public final void setDataSegundoDesconto(Calendar dataSegundoDesconto) {
		this.dataSegundoDesconto = dataSegundoDesconto;
	}
	public final Calendar getDataPagamento() {
		return dataPagamento;
	}
	public final void setDataPagamento(Calendar dataPagamento) {
		this.dataPagamento = dataPagamento;
	}
	public final FormaPagamento getFormaPagamento() {
		return formaPagamento;
	}
	public final void setFormaPagamento(FormaPagamento formaPagamento) {
		this.formaPagamento = formaPagamento;
	}
	public final Integer getTipoPagamento() {
		return tipoPagamento;
	}
	public final void setTipoPagamento(Integer tipoPagamento) {
		this.tipoPagamento = tipoPagamento;
	}
	public final Calendar getDataVencimento() {
		return dataVencimento;
	}
	public final void setDataVencimento(Calendar dataVencimento) {
		this.dataVencimento = dataVencimento;
	}
	public final Calendar getReferencia() {
		return referencia;
	}
	public final void setReferencia(Calendar referencia) {
		this.referencia = referencia;
	}
	public final Boolean getAtivo() {
		return ativo;
	}
	public final void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}
	public final BigDecimal getValorPrimeiroDesconto() {
		return valorPrimeiroDesconto;
	}
	public final void setValorPrimeiroDesconto(BigDecimal valorPrimeiroDesconto) {
		this.valorPrimeiroDesconto = valorPrimeiroDesconto;
	}
	public final BigDecimal getValorSegundoDesconto() {
		return valorSegundoDesconto;
	}
	public final void setValorSegundoDesconto(BigDecimal valorSegundoDesconto) {
		this.valorSegundoDesconto = valorSegundoDesconto;
	}
	public final String getObservacao() {
		return observacao;
	}
	public final void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	public final Responsavel getResponsavel() {
		return responsavel;
	}
	public final void setResponsavel(Responsavel responsavel) {
		this.responsavel = responsavel;
	}
	public final Cheque getCheque() {
		return cheque;
	}
	public final void setCheque(Cheque cheque) {
		this.cheque = cheque;
	}
	public final Boleto getBoleto() {
		return boleto;
	}
	public final void setBoleto(Boleto boleto) {
		this.boleto = boleto;
	}
	public final Periodo getPeriodo() {
		return periodo;
	}
	public final void setPeriodo(Periodo periodo) {
		this.periodo = periodo;
	}
	
	
}
